MVC (Model-View-Controller) একটি সফটওয়্যার ডিজাইন প্যাটার্ন যা অ্যাপ্লিকেশনকে তিনটি প্রধান অংশে ভাগ করে: Model, View, এবং Controller। এটি অ্যাপ্লিকেশন আর্কিটেকচারকে সংগঠিত করতে এবং কোডের পুনঃব্যবহারযোগ্যতা, রক্ষণাবেক্ষণ এবং স্কেলেবিলিটি সহজ করতে সহায়ক। MeanJS স্ট্যাকেও এই আর্কিটেকচার ব্যবহৃত হয়, যা সার্ভার সাইড এবং ক্লায়েন্ট সাইড অ্যাপ্লিকেশনগুলির মধ্যে একটি পরিষ্কার বিভাজন তৈরি করে।
MVC এর উপাদানসমূহ
১. Model (মডেল)
Model হল অ্যাপ্লিকেশনের ডেটা এবং ব্যবসায়িক লজিক (business logic) প্রতিনিধিত্ব করে। এটি অ্যাপ্লিকেশনের ডেটাবেস (যেমন MongoDB) এবং অন্যান্য তথ্যসূত্রের সাথে যোগাযোগ করে এবং ডেটা তৈরি, পড়া, আপডেট, এবং মুছে ফেলার (CRUD অপারেশন) কাজগুলো করে।
- কাজ:
- ডেটা এবং তার সম্পর্ক সংরক্ষণ করা।
- ডেটাবেসের সাথে যোগাযোগ করা।
- অ্যাপ্লিকেশনের লজিক এবং ডেটা ভ্যালিডেশন পরিচালনা করা।
- MeanJS এ: মডেলটি MongoDB এর সাথে কাজ করে এবং Mongoose এর মাধ্যমে ডেটাবেসের CRUD অপারেশনগুলো পরিচালনা করে।
উদাহরণ: একটি ব্যবহারকারীর তথ্য সংরক্ষণ করার জন্য একটি User Model তৈরি করা যেতে পারে, যেখানে name, email, এবং password ফিল্ড থাকে।
// user.model.js (Model)
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userSchema = new Schema({
name: String,
email: String,
password: String
});
var User = mongoose.model('User', userSchema);
module.exports = User;
২. View (ভিউ)
View হল অ্যাপ্লিকেশনের ইউজার ইন্টারফেস (UI) অংশ, যা ব্যবহারকারীর সামনে প্রদর্শিত হয়। এটি ডেটার ভিজ্যুয়াল উপস্থাপন করে এবং ব্যবহারকারীর সাথে ইন্টারঅ্যাকশন করে। View এর কাজ হল Model থেকে প্রাপ্ত ডেটাকে প্রদর্শন করা এবং ব্যবহারকারীর ইনপুট গ্রহণ করা।
- কাজ:
- ইউজার ইন্টারফেস তৈরি করা।
- ইউজারের আউটপুট প্রদর্শন করা (এটি HTML, CSS, JavaScript দ্বারা হয়)।
- ইউজার থেকে ইনপুট গ্রহণ করা (ফর্ম, বাটন ইত্যাদি)।
- MeanJS এ: AngularJS ব্যবহার করে View তৈরি করা হয়, যা ডাইনামিক UI উপস্থাপন করতে সহায়ক। AngularJS ডাটা-বাইন্ডিং, টেমপ্লেটিং, এবং রিয়েক্টিভ ইন্টারফেস তৈরি করতে পারে।
উদাহরণ: একটি HTML টেমপ্লেট যেখানে ব্যবহারকারীর নাম, ইমেইল এবং পাসওয়ার্ড দেখানো হবে।
<!-- user-view.html (View) -->
<div>
<h1>{{ user.name }}</h1>
<p>{{ user.email }}</p>
</div>
৩. Controller (কন্ট্রোলার)
Controller হল Model এবং View এর মধ্যে মধ্যস্থতাকারী (intermediary)। এটি ব্যবহারকারীর ইনপুট গ্রহণ করে, প্রয়োজনীয় কাজ সম্পন্ন করতে Model এর সাথে যোগাযোগ করে এবং পরে সেই ডেটাকে View তে প্রদর্শন করার জন্য পাঠায়। এটি business logic এবং ইউজারের ইন্টারঅ্যাকশন পরিচালনা করে।
- কাজ:
- ইউজারের ইনপুট গ্রহণ করা এবং তা Model এ প্রক্রিয়া করা।
- Model থেকে প্রাপ্ত ডেটা View এ পাঠানো।
- প্রয়োজনীয় অ্যাকশন গ্রহণ এবং তা UI তে প্রতিফলিত করা।
- MeanJS এ: Express.js এবং AngularJS এর মাধ্যমে Controller কাজ করে। Express.js সার্ভার সাইডে রাউটিং এবং কন্ট্রোলার লজিক পরিচালনা করে, এবং AngularJS ক্লায়েন্ট সাইডে ইন্টারঅ্যাকশন এবং ডেটা ম্যানেজমেন্ট করে।
উদাহরণ: একটি কন্ট্রোলার যা ব্যবহারকারীর তথ্য গ্রহণ করে এবং তা মডেল ও ভিউ তে পাঠায়।
// user.controller.js (Controller)
var User = require('../models/user.model');
exports.create = function(req, res) {
var user = new User(req.body);
user.save(function(err, user) {
if (err) {
return res.status(400).send({
message: 'Error in saving user'
});
} else {
res.status(200).send(user);
}
});
};
MVC আর্কিটেকচারের সুবিধাসমূহ
১. কোডের পরিষ্কার বিভাজন
MVC আর্কিটেকচার Model, View, এবং Controller কে আলাদা করে, যার ফলে কোড পরিষ্কার ও সংগঠিত থাকে। প্রতিটি অংশের দায়িত্ব নির্ধারিত হওয়ায়, ডেভেলপমেন্ট এবং রক্ষণাবেক্ষণ আরও সহজ হয়।
২. পুনঃব্যবহারযোগ্যতা এবং মডুলারিটি
প্রতিটি অংশ আলাদাভাবে তৈরি করা হয়, তাই যখন কোডের একটি অংশ পরিবর্তন বা আপডেট করতে হয়, তখন অন্য অংশগুলো অপরিবর্তিত থাকে। যেমন, যদি UI পরিবর্তন করতে হয় তবে মডেল বা কন্ট্রোলারে কোনো পরিবর্তন করতে হবে না।
৩. সহজ রক্ষণাবেক্ষণ
কোডের প্রতিটি অংশ আলাদা থাকায়, যখন কোনো সমস্যা বা বাগ দেখা দেয়, তখন তা খুঁজে বের করা সহজ হয়। সমস্যা কোন অংশে তা পরিষ্কারভাবে চিহ্নিত করা যায়, এবং সঠিক জায়গায় সমাধান করা যায়।
৪. স্কেলেবিলিটি
MVC আর্কিটেকচার অ্যাপ্লিকেশন স্কেল করতে সাহায্য করে। যখন অ্যাপ্লিকেশন বড় হয়, তখন Model, View, এবং Controller অংশগুলো সহজেই আলাদা এবং ম্যানেজ করা যায়।
৫. টেস্টিং সহজ
Model, View, এবং Controller প্রতিটি আলাদা ইউনিট হিসেবে কাজ করে, তাই এগুলো পৃথকভাবে টেস্ট করা সহজ হয়। এটা Unit Testing এর জন্য উপযুক্ত।
MeanJS এ MVC এর প্রয়োগ
MeanJS স্ট্যাকের মধ্যে MVC আর্কিটেকচার ব্যবহার করা হয়, যেখানে:
- Model MongoDB এবং Mongoose দিয়ে ডেটা পরিচালনা করে।
- View AngularJS দ্বারা ডাইনামিক UI তৈরি করা হয়।
- Controller Express.js দ্বারা ইউজার ইনপুট হ্যান্ডেল করে এবং ডেটা Model ও View এর মধ্যে পাঠায়।
এভাবে, MeanJS স্ট্যাক MVC আর্কিটেকচারের সুবিধাগুলি পূর্ণভাবে ব্যবহার করে, যা অ্যাপ্লিকেশন ডেভেলপমেন্টকে আরও সহজ, পরিষ্কার এবং স্কেলযোগ্য করে তোলে।
সারাংশ
MVC (Model-View-Controller) আর্কিটেকচার একটি শক্তিশালী ডিজাইন প্যাটার্ন যা অ্যাপ্লিকেশনকে তিনটি প্রধান অংশে বিভক্ত করে: Model, View, এবং Controller। এটি অ্যাপ্লিকেশন তৈরি, রক্ষণাবেক্ষণ, স্কেল এবং টেস্টিং সহজ করে। MeanJS স্ট্যাকের মধ্যে এই আর্কিটেকচার ব্যবহার করে ডেভেলপাররা একটি ক্লিন, মডুলার এবং স্কেলেবল অ্যাপ্লিকেশন তৈরি করতে সক্ষম হন।
Read more